Search results for "Partial evaluation"

showing 4 items of 4 documents

An offline partial evaluator for curry programs

2005

Narrowing-driven partial evaluation is a powerful technique for the specialization of functional logic programs. In this paper, we describe the implementation of a narrowing-driven partial evaluator for Curry programs which follows the offline approach to ensuring termination. Although the new partial evaluator is less precise than previous (online) partial evaluators for Curry, it is much faster and, thus, allows the specialization of larger programs.

Computer scienceProgramming languageSpecialization (functional)Currycomputer.software_genrecomputerPartial evaluationcomputer.programming_languageProceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming
researchProduct

AnySeq: A High Performance Sequence Alignment Library based on Partial Evaluation

2020

Sequence alignments are fundamental to bioinformatics which has resulted in a variety of optimized implementations. Unfortunately, the vast majority of them are hand-tuned and specific to certain architectures and execution models. This not only makes them challenging to understand and extend, but also difficult to port to other platforms. We present AnySeq - a novel library for computing different types of pairwise alignments of DNA sequences. Our approach combines high performance with an intuitively understandable implementation, which is achieved through the concept of partial evaluation. Using the AnyDSL compiler framework, AnySeq enables the compilation of algorithmic variants that ar…

FOS: Computer and information sciences0301 basic medicineScheme (programming language)Computer Science - PerformanceComputer science0206 medical engineeringSequence alignment02 engineering and technologyParallel computingcomputer.software_genreMetaprogrammingDNA sequencingPartial evaluationPerformance (cs.PF)03 medical and health sciences030104 developmental biologyComputer Science - Distributed Parallel and Cluster ComputingFunction composition (computer science)MultithreadingDistributed Parallel and Cluster Computing (cs.DC)Compilercomputer020602 bioinformaticscomputer.programming_languageCodebase
researchProduct

AnyDSL: a partial evaluation framework for programming high-performance libraries

2023

This paper advocates programming high-performance code using partial evaluation. We present a clean-slate programming system with a simple, annotation-based, online partial evaluator that operates on a CPS-style intermediate representation. Our system exposes code generation for accelerators (vectorization/parallelization for CPUs and GPUs) via compiler-known higher-order functions that can be subjected to partial evaluation. This way, generic implementations can be instantiated with target-specific code at compile time. In our experimental evaluation we present three extensive case studies from image processing, ray tracing, and genome sequence alignment. We demonstrate that using partial …

Intermediate languageComputer science020207 software engineeringImage processing02 engineering and technologyParallel computingPartial evaluation004020204 information systems0202 electrical engineering electronic engineering information engineeringCode generationRay tracing (graphics)General-purpose computing on graphics processing unitsSafety Risk Reliability and QualityImplementationSoftwareCompile time
researchProduct

Fast narrowing-driven partial evaluation for inductively sequential programs

2005

Narrowing-driven partial evaluation is a powerful technique for the specialization of (first-order) functional and functional logic programs. However, although it gives good results on small programs, it does not scale up well to realistic problems (e.g., interpreter specialization). In this work, we introduce a faster partial evaluation scheme by ensuring the termination of the process offline . For this purpose, we first characterize a class of programs which are quasi-terminating , i.e., the computations performed with needed narrowing—the symbolic computation mechanism of narrowing-driven partial evaluation—only contain finitely many different terms (and, thus, partial evaluation termi…

Scheme (programming language)Class (computer programming)Functional programmingTheoretical computer scienceComputer scienceComputationProgram transformationcomputer.software_genreSymbolic computationComputer Graphics and Computer-Aided DesignPartial evaluationProgram analysisLogical programmingSpecialization (logic)Automatic programmingcomputerSoftwareInterpretercomputer.programming_languageProceedings of the tenth ACM SIGPLAN international conference on Functional programming
researchProduct